package com.itheima.dubbo.api;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.tanhua.model.domain.UserInfo;

import java.util.List;
import java.util.Map;

/**
 * @Author Pan Rundong
 * @Date 2023-02-25 21:05
 * @Desc 用户详细信息Api
 */
public interface UserInfoApi {
    /**
     * 保存用户信息
     * @Author: Pan Rundong
     * @param userInfo
     * @return void
     */
    void save(UserInfo userInfo);

    /**
     * 根据id查找
     * @Author: Pan Rundong
     * @param id
     * @return com.tanhua.model.domain.UserInfo
     */
    UserInfo findById(Long id);

    /**
     * 更新
     * @Author: Pan Rundong
     * @param userInfo
     * @return void
     */
    void update(UserInfo userInfo);

    /**
     * 查询推荐用户信息
     *
     * @param ids
     * @param age
     * @param gender
     * @return java.util.Map
     * @Author Pan Rundong
     */
    Map<Long, UserInfo> recommendation(List<Long> ids, Integer age, String gender);

    /**
     * 分页查询推荐用户信息
     *
     * @param longs
     * @param age
     * @param gender
     * @return com.tanhua.model.vo.PageResult
     * @Author Pan Rundong
     */
    Page<UserInfo> recommendationPage(Integer page, Integer pageSize,
                                      List<Long> longs, Integer age, String gender);

    /**
     * 批量查询用户详情
     *    返回值：Map<id,UserInfo>
     */
    Map<Long,UserInfo> findByIds(List<Long> userIds,UserInfo info);

    /**
     * 用户分页查找
     *
     * @param page
     * @param pagesize
     * @return com.tanhua.model.vo.PageResult
     * @Author Pan Rundong
     */
    IPage<UserInfo> getPage(Integer page, Integer pagesize);

}
